1. Field of the Invention
This invention relates generally to Peripheral Component Interconnect Express (PCIe) and particularly to stripe table in a storage system employing PCIe.
2. Background
Solid State Drives (SSDs) using flash memory have become a viable alternative to Hard Disc Drives (HDDs) in many applications. Such applications include storage for notebook and tablets where storage capacity is not too high and power and or weight and form factor are key metrics and storage spaces for servers with both power, performance (sustained read/write, random read/write) and reliability being key metrics.
SSDs, by eliminating mechanical parts, are inherently more reliable than HDDs. Hardware platforms used in enterprise applications require high reliability as measured by Mean Time Between Failures (MTBF) and/or Bit Error Rate (BER). Adding redundancy clearly increases the reliability of storage systems.
Redundant Array of Independent Discs (RAID) has been used to provide a highly reliable storage system using HDDs. There are several RAID levels that have evolved. RAID level 4 (or RAID 4) and RAID level 5 (RAID 5) are block stripped that add redundant information in the form of parity and allow repairing one failed disk. In RAID 4, one physical disk in the array is dedicated for parity, and in RAID 5, the parity is distributed throughout the physical disks in the array rather than being placed on a single disk. The parity defined in RAID 4 and RAID 5 is the exclusive-OR of the data on corresponding stripped blocks of the other disks. Parity generation for a partial stripe (when the amount of write is not a multiple of full strip) is a bottleneck for RAID and specifically RAID 4 and RAID 5. RAID level 6 (or RAID 6) is block stripped that adds two redundant information in the form of parity and allow repairing up to two failed disk.
A well know problem in a redundant array of physically addressed solid state disks (paSSD) system is parity update when a partial stripe is updated that requires a read modify write.
The management of blocks within the flash subsystems includes “garbage collection” (also referred to as “GC”) for collecting valid pages from a group of blocks (with a mix of valid and invalid page) into fewer blocks and in the process creating free blocks.
A problem in a redundant array of physically addressed solid state disks system is parity update for garbage collection that requires extra bus bandwidth to read all valid pages of blocks being garbage collected and write back with updated parity.
What is required is a redundant array of solid state disks that eliminates the need for partial strip read modify write.